iOS SDK Changelog

What's new in iOS SDK 10.1 Build 14B72

Oct 24, 2016
  • This update includes Portrait Camera for iPhone 7 Plus (beta), transit directions for Japan, stability improvements and bug fixes.

New in iOS SDK 9 Beta 4 (Jul 22, 2015)

  • App Extensions - Fixed: Debugging an action or sharing extension can cause the extension to be missing in the UIActivityViewController object.
  • Apple ID - Fixed:
  • Attempting to create a new Apple ID via Game Center may cause a crash.
  • If you enter an incorrect verification code for a two-factor authentication account in Setup Assistant, it may hang.
  • During Setup Assistant, tapping Cancel on the prompt that prompts you to enter the code for two-factor authentication will result in getting stuck at the login screen.
  • Apps that use app-specific passwords cause multiple notifications if your account uses two-factor authentication
  • Audio - Fixed: The OpenAL framework is not available
  • Camera - Fixed: You can’t take photos in the Camera app using the side volume buttons with this beta
  • Family Sharing - Fixed:
  • Adding a family member inline fails.
  • Workaround: Use invite to add family members.
  • Ask To Buy notifications don’t respond when tapped.
  • File Providers - Fixed:
  • On certain devices, the Document Picker is not displayed. Instead, you just see a white screen.
  • GLKit - Fixed:
  • GLKMesh and GLKMeshBuffer objects initialize incorrectly in this beta, which limits the use of GLKit with Model I/O.
  • Handoff - Fixed:
  • Handoff does not work with an iOS 9 device that does not have a passcode set
  • iCloud Backup - Fixed:
  • In rare cases, restoring from an iCloud backup will not restore your applications
  • MetalKit - Fixed:
  • MTKMesh and MTKMeshBuffer objects initialize incorrectly in this beta, which limits the use of MetalKit with Model I/O.
  • Music - Fixed:
  • The Apple Music signup screen may not display correctly.
  • It may not be possible to Love an album or playlist
  • Phone - Fixed:
  • Call history may be lost upon upgrade to this beta.
  • Voicemail may be unavailable after an erase install.
  • Workaround: Reboot the device
  • ReplayKit - Fixed:
  • YouTube.framework is missing from ReplayKit.
  • Safari - Fixed:
  • If you use Autofill on iPad, passwords may not be automatically entered into login fields
  • Spotlight - Fixed:
  • Tapping a Mail message, Maps favorites, Note, or Message in search results does not open the app on some devices.
  • Telephony - Fixed:
  • After purchasing a cellular data plan on an iPad, it may display an alert that indicates the plan has expired.
  • Workaround: Wait a few minutes, then toggle airplane mode.
  • Watch App - Fixed:
  • Tapping Cancel does not work in the iForgot work flows in Watch Setup Assistant

New in iOS SDK 9 Beta 2 (Jun 23, 2015)

  • AirPlay:
  • AirPlay connectivity issues with Apple TV.
  • Apple ID:
  • If you change your primary email address on appleid.apple.com, you may not be able to authenticate on device (including signing out of Find My iPhone).
  • Workaround: First, change your email back to the previous email on appleid.apple.com. Then sign out and back in on your device.
  • Apple Pay:
  • You cannot present the Apple Pay sheet if you request PKAddressFieldName for your required shipping address fields.
  • AVFoundation:
  • AVQueuePlayer now supports a mixture of file-based media and HTTP Live Streaming media in its queue. Prior to this, you had to ensure that all items in the queue were of the same type.
  • For apps linked against iOS 9 or later, the media interruption behavior for AV(Queue)Player has changed.
  • Before iOS 9, apps could interrupt other media-playing clients by associating or adding AVPlayerItem to AVPlayer or by modifying the time or date of the current AVPlayerItem (using the seekToTime: or seekToDate: methods). In iOS 9, these operations interrupt only when AVPlayer object’s playback rate is changed to a non-zero value through the rate property or play method.
  • Picture in Picture playback might stop and the Picture in Picture button might disappear when using AVPlayerViewController for video playback and replacing the underlying AVPlayer object’s current item using replaceCurrentItemWithPlayerItem:.
  • The AVPictureInPictureController interface and cancelPictureInPicture method are deprecated.
  • Bluetooth:
  • Incoming cellular call audio may not route to certain Bluetooth headsets.
  • Workaround: Route audio away from Bluetooth headset (for example, to the phone speaker) and back.
  • CarPlay:
  • When you turn off your vehicle with a device still attached to a CarPlay-enabled head unit, the device may become completely unresponsive and require a hard reboot.
  • iPhone 6, iPhone 6 Plus, and iPad Air 2 devices may not work with CarPlay.
  • CBCentralManager:
  • Apps that use CBCentralManager (particularly retrievePeripherals: and retrieveConnectedPeripherals) will crash on launch or upon pairing an accessory. CBCentralManager was deprecated in iOS 7.0 and has been removed in iOS 9.0.
  • Contacts:
  • LDAP and GAL servers aren’t queried for autocompletion.
  • You may receive CNContactStoreDidChangeNotification and not know if it was one of your CNContactStore instances that trigged the notification.
  • Family Sharing:
  • Changing your password prevents the Family section of iCloud Settings from loading.
  • Foundation:
  • https connections are displayed as https connections. Note: Horizontal location constraints should consistently reference either left/right OR leading/trailing attributes. For apps linked against the iOS 9 SDK, NSLayoutConstraint will throw an exception if you attempt to create a constraint between a leading/trailing attribute AND a left/right attribute.
  • HomeKit:
  • Accessories may not be removed from the HMAccessoryBrowser object after being added to a home.
  • HMLocationEvent currently supports only CLCircularRegion.
  • iOS 9 does not currently accept Home invitations from iOS 8.
  • iCloud Backup:
  • Restoring from a backup created in iOS 9 is slower than restoring from a backup created in iOS 8 or earlier.
  • You may see an incorrect “iCloud Backup” alert that suggests your device hasn’t backed up when it has backed up successfully.
  • Keyboards:
  • Third party keyboards don't work in search results.
  • Third party keyboards may get removed from the list of active keyboards in apps.
  • Workaround: Add keyboards again from Keyboard Settings
  • Keychain:
  • When using the Setup Assistant to enable iCloud Keychain, the SMS verification code may not autopopulate if the SMS is received on the same device.
  • SecKeyGeneratePair may sometimes fail to generate a key that is stored in secure enclave (kSecAttrTokenIDSecureEnclave).
  • Keychain items created with kSecAccessControlUserPresence access control list are using global Touch ID credential for 10 minutes. When an iPhone is unlocked by Touch ID, these items reuse the Touch ID unlock information and do not ask for new authentication. When the iPhone is unlocked using a passcode, the items require Touch ID.
  • Local Authentication setCredential fails to set application password for keychain operation.
  • SecRequestSharedWebCredential does not show the user name picker.
  • Maps:
  • Navigation steps, instructions, and display will not update properly if your iPhone is paired to an Apple Watch and the iPhone screen is locked.
  • Mail:
  • Mail crashes when trying to print a message.
  • MDM:
  • The AvailableOSUpdates MDM command fails on unsupervised devices as an unknown command. The command succeeds only on supervised DEP-enrolled devices.
  • Multitasking:
  • When displayed in multitasking scenarios, secondary apps cannot be pinned, unpinned, or resized if VoiceOver is enabled. Workaround: Disable VoiceOver in Settings > General > Accessibility to resume functionality of these multitasking gestures.
  • iPad Air Simulator does not have limited multitasking capabilities (overlay and PiP only). In this beta, there is no difference between the iPad Air and iPad Air 2 Simulators.
  • App switcher continuity does not function in this beta. If you need to test continuity, you can test it on the lock screen.
  • Notes:
  • After upgrading Notes in iOS 9 Beta 1, Notes will not sync using iTunes on Windows.
  • Podcasts:
  • The search page does not always load or provide results.
  • The subscribe button is slow to respond to user’s touches.
  • When using multitasking, the Podcast app crashes when reducing to 50% and then increasing to 66%.
  • Safari:
  • Content Blockers with invalid JSONs are not loaded.
  • Setting a tintColor on SFSafariViewController doesn’t apply.
  • Notes:
  • “Find on Page” is now available both from the Share sheet as well as in the Completions List.
  • Request Desktop Site has moved. It’s now in the Share sheet instead of Favorites.
  • Web Browser–to–Native App Handoff does not work with your app if the apple-app-site-association file isn’t correctly formatted and signed. Please see the Handoff Programming Guide and the Shared Web Credentials Reference for more information.
  • Search:
  • Indexing a Core Spotlight item with a thumbnail does not show the thumbnail or description in search results.
  • All NSUserActivity objects get indexed and displayed in Spotlight (not just the ones that are marked searchable).
  • Settings:
  • The Cellular Data page may be blank after swapping SIM cards.
  • Tapping Settings > iCloud > AppleID may be unresponsive the first few times. Workaround: Please try again. It eventually works.
  • Setup Assistant:
  • Choosing the Disagree button on the iCloud terms pane does not let you proceed.
  • Siri:
  • In Siri Suggestions on iPad, attempting to call, message, or FaceTime a contact with multiple addresses causes Springboard to crash.
  • UIKit:
  • openURL: only works with URL schemes declared in an app’s Info.plist.
  • VPN:
  • If you have the Developer Disk Image package installed, AlwaysOn VPN tunnel does not establish.
  • If both Cellular and Wi-Fi tunnels are up, occasionally the Cellular tunnel will become the default route instead of the Wi-Fi tunnel.
  • Occasionally interface UP / DOWN events are not handled, which leads to the tunnel not being brought up or torn down immediately.
  • WebKit:
  • The new API to load local files currently doesn’t work for loading files inside the app bundle.
  • More details about the iOS 9 Beta 2 release are available at https://developer.apple.com/library/prerelease/ios/releasenotes/General/RN-iOSSDK-9.0/index.html#//apple_ref/doc/uid/TP40016202.

New in iOS SDK 8.4 Beta 1 (Apr 14, 2015)

  • APP EXTENSIONS:
  • Notes:
  • App extensions need an arm64 slice to run on 64-bit devices. If you try to run the armv7 slice on a 64-bit device it won’t work.
  • Apps need to have an arm64 slice if the bundle contains a framework that both the app and the app extension link against

New in iOS SDK 8.3 Beta 4 (Mar 25, 2015)

  • Fixed in Beta 4:
  • CarPlay:Outgoing Call Audio and FaceTime Audio may be choppy.
  • Spotlight: 3rd Party keyboards may not be available for selection in Spotlight Search.

New in iOS SDK 8.3 Beta (Feb 10, 2015)

  • A detailed list of all bug fixes and improvements are available at https://developer.apple.com/library/prerelease/ios/releasenotes/General/RN-iOSSDK-8.3/index.html .

New in iOS SDK 8.2 Beta 5 (Feb 3, 2015)

  • A detailed list of all bug fixes and improvements are available at https://developer.apple.com/library/prerelease/ios/releasenotes/General/RN-iOSSDK-8.2/index.html

New in iOS SDK 8.1.1 (Nov 17, 2014)

  • A detailed list of all new features and bugs fixed in this release can be found at https://developer.apple.com/library/IOs/releasenotes/Miscellaneous/RN-iOSSDK-8.1/index.html .

New in iOS SDK 8.1 (Oct 21, 2014)

  • A detailed list of all new features and bugs fixed in this release can be found at https://developer.apple.com/library/ios/releasenotes/Miscellaneous/RN-iOSSDK-8.1 .

New in iOS SDK 8.0 (Sep 22, 2014)

  • A detailed list of all new features and bugs fixed in this release can be found at https://developer.apple.com/library/ios/releasenotes/General/RN-iOSSDK-8.0/ .

New in iOS SDK 7.1 (Apr 9, 2014)

  • CFNetwork:
  • A compatibility behavior has been added to address an issue where some web servers would send the wrong Content-Length value for “Content-Encoding: gzip” content. Previously, NSURLConnection and NSURLSession would send a “network connection was lost” / NSURLErrorNetworkConnectionLost (-1005) error in this situation.
  • The compatibility behavior applies only if the Content-Length value exactly matches the expanded gzip’d content. It won’t apply for “off by 1” or similar miscounting.
  • Safari:
  • A property, minimal-ui, has been added for the viewport meta tag key that allows minimizing the top and bottom bars on the iPhone as the page loads. While on a page using minimal-ui, tapping the top bar brings the bars back. Tapping back in the content dismisses them again.
  • For example, use

New in iOS SDK 7.0 (Sep 28, 2013)

  • User Interface Changes:
  • iOS 7 includes many new features intended to help you create great user interfaces.
  • UI Redesign:
  • The iOS 7 user interface has been completely redesigned. Throughout the system, a sharpened focus on functionality and on the user’s content informs every aspect of design. Translucency, refined visual touches, and fluid, realistic motion impart clarity, depth, and vitality to the user experience. Whether you are creating a new app or updating an existing one, keep these qualities in mind as you work on the design.
  • Apps compiled against the iOS 7 SDK automatically receive the new appearance for any standard system views when the app is run on iOS 7. If you use Auto Layout to set the size and position of your views, those views are repositioned as needed. But there may still be additional work to do to make sure your interface has the appearance you want. Similarly, if you customize your app’s views, you may need to make changes to support the new appearance fully.
  • For guidance on how to design apps that take full advantage of the new look in iOS 7, see iOS 7 Design Resources.
  • Dynamic Behaviors for Views:
  • Apps can now specify dynamic behaviors for UIView objects and for other objects that conform to the UIDynamicItem protocol. (Objects that conform to this protocol are called dynamic items.) Dynamic behaviors offer a way to improve the user experience of your app by incorporating real-world behavior and characteristics, such as gravity, into your app’s animations. UIKit supports the following types of dynamic behaviors:
  • A UIAttachmentBehavior object specifies a connection between two dynamic items or between an item and a point. When one item (or point) moves, the attached item also moves. The connection is not completely static, though. An attachment behavior has damping and oscillation properties that determine how the behavior changes over time.
  • A UICollisionBehavior object lets dynamic items participate in collisions with each other and with the behavior’s specified boundaries. The behavior also lets those items respond appropriately to collisions.
  • A UIGravityBehavior object specifies a gravity vector for its dynamic items. Dynamic items accelerate in the vector’s direction until they collide with other appropriately configured items or with a boundary.
  • A UIPushBehavior object specifies a continuous or instantaneous force vector for its dynamic items.
  • A UISnapBehavior object specifies a snap point for a dynamic item. The item snaps to the point with a configured effect. For example, it can snap to the point as if it were attached to a spring.
  • Dynamic behaviors become active when you add them to an animator object, which is an instance of the UIDynamicAnimator class. The animator provides the context in which dynamic behaviors execute. A given dynamic item can have multiple behaviors, but all of those behaviors must be animated by the same animator object.
  • For information about the behaviors you can apply, see UIKit Framework Reference.
  • Text Kit:
  • Text Kit is a full-featured set of UIKit classes for managing text and fine typography. Text Kit can lay out styled text into paragraphs, columns, and pages; it easily flows text around arbitrary regions such as graphics; and it manages multiple fonts. Text Kit is integrated with all UIKit text-based controls to enable apps to create, edit, display, and store text more easily—and with less code than was previously possible in iOS.
  • Text Kit comprises new classes and extensions to existing classes, including the following:
  • The NSAttributedString class has been extended to support new attributes.
  • The NSLayoutManager class generates glyphs and lays out text.
  • The NSTextContainer class defines a region where text is laid out.
  • The NSTextStorage class defines the fundamental interface for managing text-based content.
  • For more information about Text Kit, see Text Programming Guide for iOS.
  • 64-Bit Support:
  • Apps can now be compiled for the 64-bit runtime. All system libraries and frameworks are 64-bit ready, meaning that they can be used in both 32-bit and 64-bit apps. When compiled for the 64-bit runtime, apps may run faster because of the availability of extra processor resources in 64-bit mode.
  • iOS uses the same LP64 model that is used by OS X and other 64-bit UNIX systems, which means fewer problems when porting code. For information about the iOS 64-bit runtime and how to write 64-bit apps, see 64-Bit Transition Guide for Cocoa Touch.
  • Multitasking Enhancements:
  • iOS 7 supports two new background execution modes for apps:
  • Apps that regularly update their content by contacting a server can register with the system and be launched periodically to retrieve that content in the background. To register, include the UIBackgroundModes key with the fetch value in your app’s Info.plist file. Then, when your app is launched, call the setMinimumBackgroundFetchInterval: method to determine how often it receives update messages. Finally, you must also implement the application:performFetchWithCompletionHandler: method in your app delegate.
  • Apps that use push notifications to notify the user that new content is available can fetch the content in the background. To support this mode, include the UIBackgroundModes key with the remote-notification value in your app’s Info.plist file. You must also implement the application:didReceiveRemoteNotification:fetchCompletionHandler: method in your app delegate.
  • Apps supporting either the fetch or remote-notification background modes may be launched or moved from the suspended to background state at appropriate times. In the case of the fetch background mode, the system uses available information to determine the best time to launch or wake apps. For example, it does so when networking conditions are good or when the device is already awake. You can also send silent push notifications—that is, notifications that do not display alerts or otherwise disturb the user.
  • For small content updates, use the NSURLRequest class. To upload or download larger pieces of content in the background, use the new NSURLSession class. This class improves on the existing NSURLConnection class by providing a simple, task-based interface for initiating and processing NSURLRequest objects. A single NSURLSession object can initiate multiple download and upload tasks, and use its delegate to handle any authentication requests coming from the server.
  • For more information about the new background modes, see “App States and Multitasking” in iOS App Programming Guide.
  • Games:
  • iOS 7 includes enhanced support for games.
  • Sprite Kit Framework:
  • The Sprite Kit framework (SpriteKit.framework) provides a hardware-accelerated animation system optimized for creating 2D and 2.5D games. Sprite Kit provides the infrastructure that most games need, including a graphics rendering and animation system, sound playback support, and a physics simulation engine. Using Sprite Kit frees you from creating these things yourself, and it lets you focus on the design of your content and the high-level interactions for that content.
  • Content in a Sprite Kit app is organized into scenes. A scene can include textured objects, video, path-based shapes, Core Image filters, and other special effects. Sprite Kit takes those objects and determines the most efficient way to render them onscreen. When it is time to animate the content in your scenes, you can use Sprite Kit to specify explicit actions you want performed, or you can use the physics simulation engine to define physical behaviors (such as gravity, attraction, or repulsion) for your objects.
  • In addition to the Sprite Kit framework, there are Xcode tools for creating particle emitter effects and texture atlases. You can use the Xcode tools to manage app assets and update Sprite Kit scenes quickly.
  • For more information about how to use Sprite Kit, see Sprite Kit Programming Guide. To see an example of how to use Sprite Kit to build a working app, see code:Explained Adventure.
  • Game Controller Framework:
  • The Game Controller framework (GameController.framework) lets you discover and configure Made-for-iPhone/iPod/iPad (MFi) game controller hardware in your app. Game controllers can be devices connected physically to an iOS device or connected wirelessly over Bluetooth. The Game Controller framework notifies your app when controllers become available and lets you specify which controller inputs are relevant to your app.
  • For more information about supporting game controllers, see Game Controller Programming Guide.
  • Game Center Improvements:
  • Game Center includes the following improvements:
  • Turn-based matches now support a new feature known as exchanges. Exchanges let players initiate actions with other players, even when it is not their turn. You can use this feature to implement simultaneous turns, player chats, and trading between players.
  • The limit on per-app leaderboards has been raised from 25 to 100. You can also organize your leaderboards using a GKLeaderboardSet object, which increases the limit to 500.
  • You can add conditions to challenges that define when the challenge has been met. For example, a challenge to beat a time in a driving game might stipulate that other players must use the same vehicle.
  • The framework has improved its authentication support and added other features to prevent cheating.
  • For more information about how to use the new Game Center features, see Game Center Programming Guide. For information about the classes of the Game Kit framework, see Game Kit Framework Reference.
  • Maps:
  • The Map Kit framework (MapKit.framework) includes numerous improvements and features for apps that use map-based information. Apps that use maps to display location-based information can now take full advantage of the 3D map support found in the Maps app, including controlling the viewing perspective programmatically. Map Kit also enhances maps in your app in the following ways:
  • Overlays can be placed at different levels in the map content so that they appear above or below other relevant data.
  • You can apply an MKMapCamera object to a map to add position, tilt, and heading information to its appearance. The information you specify using the camera object imparts a 3D perspective on the map.
  • The MKDirections class lets you ask for direction-related route information from Apple. You can use that route information to create overlays for display on your own maps.
  • The MKGeodesicPolyline class lets you create a line-based overlay that follows the curvature of the earth.
  • Apps can use the MKMapSnapshotter class to capture map-based images.
  • The visual representation of overlays is now based on the MKOverlayRenderer class, which replaces overlay views and offers a simpler rendering approach.
  • Apps can now supplement or replace a map’s existing tiles using the MKTileOverlay and MKTileOverlayRenderer classes.
  • For more information about the classes of the Map Kit framework, see Map Kit Framework Reference.
  • AirDrop:
  • AirDrop lets users share photos, documents, URLs, and other kinds of data with nearby devices. AirDrop support is now built in to the existing UIActivityViewController class. This class displays different options for sharing the content that you specify. If you are not yet using this class, you should consider adding it to your interface.
  • To receive files sent via AirDrop, do the following:
  • In Xcode, declare support for the document types your app supports. (Xcode adds the appropriate keys to your app’s Info.plist file.) The system uses this information to determine whether your app can open a given file.
  • Implement the application:openURL:sourceApplication:annotation: method in your app delegate. (The system calls this method when a new file is received.)
  • Files sent to your app are placed in the Documents/Inbox directory of your app’s home directory. If you plan to modify the file, you must move it out of this directory before doing so. (The system allows your app to read and delete files in this directory only.) Files stored in this directory are encrypted using data protection, so you must be prepared for the file to be inaccessible if the device is currently locked.
  • For more information about using an activity view controller to share data, see UIActivityViewController Class Reference.
  • Inter-App Audio:
  • The Audio Unit framework (AudioUnit.framework) adds support for Inter-App Audio, which enables the ability to send MIDI commands and stream audio between apps on the same device. For example, you might use this feature to record music from an app acting as an instrument or use it to send audio to another app for processing. To vend your app’s audio data, publish a I/O audio unit (AURemoteIO) that is visible to other processes. To use audio features from another app, use the audio component discovery interfaces in iOS 7.
  • For information about the new interfaces, see the framework header files. For general information about the interfaces of this framework, see Audio Unit Framework Reference.
  • Peer-to-Peer Connectivity:
  • The Multipeer Connectivity framework (MultipeerConnectivity.framework) supports the discovery of nearby devices and the direct communication with those devices without requiring Internet connectivity. This framework makes it possible to create multipeer sessions easily and to support reliable in-order data transmission and real-time data transmission. With this framework, your app can communicate with nearby devices and seamlessly exchange data.
  • The framework provides programmatic and UI-based options for discovering and managing network services. Apps can integrate the MCBrowserViewController class into their user interface to display a list of peer devices for the user to choose from. Alternatively, you can use the MCNearbyServiceBrowser class to look for and manage peer devices programmatically.
  • For more information about the interfaces of this framework, see Multipeer Connectivity Framework Reference.
  • New Frameworks:
  • iOS 7 includes the following new frameworks:
  • The Game Controller framework (GameController.framework) provides an interface for communicating with game-related hardware; see “Game Controller Framework”.
  • The Sprite Kit framework (SpriteKit.framework) provides support for sprite-based animations and graphics rendering; see “Sprite Kit Framework.”
  • The Multipeer Connectivity framework (MultipeerConnectivity.framework) provides peer-to-peer networking for apps; see “Peer-to-Peer Connectivity.”
  • The JavaScript Core framework (JavaScriptCore.framework) provides Objective-C wrapper classes for many standard JavaScript objects. Use this framework to evaluate JavaScript code and parse JSON data. For information about the classes of this framework, see the framework header files.
  • The Media Accessibility framework (MediaAccessibility.framework) manages the presentation of closed-captioned content in your media files. This framework works in conjunction with new settings that let the user enable the display of closed captions.
  • The Safari Services framework (SafariServices.framework) provides support for programmatically adding URLs to the user’s Safari reading list. For information about the class provided by this framework, see the framework header files.
  • Enhancements to Existing Frameworks:
  • In addition to its new features, iOS 7 also includes significant enhancements, organized here by framework. For a complete list of new interfaces, see iOS 7.0 API Diffs.
  • UIKit Framework:
  • The UIKit framework (UIKit.framework) includes the following enhancements:
  • All UI elements have been updated to present the new look associated with iOS 7.
  • UIKit Dynamics lets you mimic real-world effects such as gravity in your animations; see “Dynamic Behaviors for Views.”
  • Text Kit provides sophisticated text editing and display capabilities; see “Text Kit.”
  • The UIView class defines the following additions:
The tintColor property applies a tint color to both the view and its subviews. For information on how to apply tint colors, see iOS 7 UI Transition Guide.
You can create keyframe-based animations using views. You can also make changes to your views and specifically prevent any animations from being performed.
  • The UIViewController class defines the following additions:
View controller transitions can be customized, driven interactively, or replaced altogether with ones you designate.
View controllers can now specify their preferred status bar style and visibility. The system uses the provided information to manage the status bar style as new view controllers appear. You can also control how this behavior is applied using the UIViewControllerBasedStatusBarAppearance key in your app’s Info.plist file.
  • The UIMotionEffect class defines the basic behavior for motion effects, which are objects that define how a view responds to device-based motion.
  • Collection views add support for intermediate layout transitions and invalidation contexts (invalidation contexts help you improve the performance of your custom layout code). You can also apply UIKit Dynamics to collection view layout attributes to animate the items in the collection.
  • The imageNamed: method of UIImage supports retrieving images stored in asset catalogs, which are a way to manage and optimize assets that have multiple sizes and resolutions. You create asset catalogs in Xcode.
  • There are methods on UIView and UIScreen for creating a snapshot of their contents. Generating snapshots using these new interfaces is significantly faster than rendering the view or screen contents yourself.
  • Gesture recognizers can specify dependencies dynamically to ensure that one gesture recognizer fails before another is considered.
  • The UIKeyCommand class wraps keyboard events received from an external hardware keyboard. These events are delivered to the app’s responder chain for processing.
  • A UIFontDescriptor object describes a font using a dictionary of attributes. Use font descriptors to interoperate with other platforms.
  • The UIFont and UIFontDescriptor classes support dynamic text sizing, which improves legibility for text in apps. With this feature, the user controls the desired font size that all apps in the system should use.
  • The UIActivity class now supports new activity types, including activities for sending items via AirDrop, adding items to a Safari reading list, and posting content to Flickr, Tencent Weibo, and Vimeo.
  • The UIApplicationDelegate protocol adds methods for handling background fetch behaviors.
  • The UIScreenEdgePanGestureRecognizer class is a new gesture recognizer that tracks pan gestures that originate near an edge of the screen.
  • UIKit adds support for running in a guided-access mode, which allows an app to lock itself to prevent modification by the user. This mode is intended for institutions such as schools, where users bring their own devices but need to run apps provided by the institution.
  • State restoration now allows the saving and restoration of any object. Objects adopting the UIStateRestoring protocol can write out state information when the app moves to the background and have that state restored during subsequent launches.
  • Table views now support estimating the height of rows and other elements, which improves scrolling performance.
  • You can now more easily configure a UISearchDisplayController object to work with a UINavigationBar object.
  • For information about the classes of this framework, see UIKit Framework Reference.
  • Store Kit Framework:
  • The Store Kit framework (StoreKit.framework) has migrated to a new receipt system that developers can use to verify in-app purchases on the device itself. You can also use it to verify the app purchase receipt on the server.
  • For more information about how to use this new receipt system, see Receipt Validation Programming Guide.
  • Pass Kit Framework:
  • The Pass Kit framework (PassKit.framework) includes new APIs for adding multiple passes in a single operation.
  • These new features were added to the pass file format:
  • New keys specify the expiration date for a pass.
  • You can specify that a pass is relevant only when it is in the vicinity of specific iBeacons.
  • New attributes control how a pass is displayed. You can group passes together, display links with custom text on the back of a pass, and control how time values are displayed on the pass.
  • You can now associate extra data with a pass. This data is available to your app but is not displayed to the user.
  • You can designate which data detectors to apply to the fields of your passes.
  • For information about how to use Pass Kit in your app, see Passbook Programming Guide. For information about the pass file format, see Passbook Package Format Reference.
  • OpenGL ES:
  • iOS 7 adds support for OpenGL ES 3.0 and adds new features to OpenGL ES 2.0.
  • OpenGL ES 3.0 includes as core functionality the features of many extensions supported in OpenGL ES 2.0 on iOS. But OpenGL ES 3.0 also adds new features to the OpenGL ES shading language and new core functionality that has never been available on mobile processors before, including multiple render targets and transform feedback. You can use OpenGL ES 3 to more easily implement advanced rendering techniques, such as deferred rendering.
To create an OpenGL ES 3 context on devices that support it, pass the kEAGLRenderingAPIOpenGLES3 constant to the initWithAPI: method.
  • OpenGL ES 2 adds the following new extensions:
  • The EXT_sRGB extension adds support for sRGB framebuffer operations.
  • The GL_EXT_pvrtc_sRGB extension adds support for sRGB texture data compressed in the PVRTC texture compression format. (This extension is also supported in OpenGL ES 3.0).
  • The GL_EXT_draw_instanced and GL_EXT_instanced_arrays extensions can improve rendering performance when your app draws multiple instances of the same object. You use a single call to draw instances of the same object. You add variation to each instance by specifying how fast each vertex attribute advances or by referencing an ID for each instance in your shader.
  • Textures can be accessed in vertex shaders in both OpenGL ES 2.0 and 3.0. Query the value of the MAX_VERTEX_TEXTURE_IMAGE_UNITS attribute to determine the exact number of textures you can access. In earlier versions of iOS, this attribute always had a value of 0.
  • For more information, see OpenGL ES Programming Guide for iOS and iOS Device Compatibility Reference.
  • Message UI Framework:
  • In the Message UI framework, the MFMessageComposeViewController class adds support for attaching files to messages.
  • For information about the new interfaces, see the framework header files. For information about the classes of this framework, see Message UI Framework Reference.
  • Media Player Framework:
  • In the Media Player framework, the MPVolumeView class provides support for determining whether wireless routes such as AirPlay and Bluetooth are available for the user to select. You can also determine whether one of these wireless routes is currently active. For information about the new interfaces, see the framework header files.
  • For information about the classes of Media Player framework, see Media Player Framework Reference.
  • Map Kit Framework:
  • The Map Kit framework (MapKit.framework) includes changes that are described in “Maps.”
  • For information about the classes of this framework, see Map Kit Framework Reference.
  • Image I/O Framework:
  • The Image I/O framework (ImageIO.framework) now has interfaces for getting and setting image metadata.
  • For information about the new interfaces, see the framework header files. For information about the classes of this framework, see Image I/O Reference Collection.
  • iAd Framework:
  • The iAd framework (iAd.framework) includes two extensions to other frameworks that make it easier to incorporate ads into your app’s content:
  • The framework introduces new methods on the MPMoviePlayerController class that let you run ads before a movie.
  • The framework extends the UIViewController class to make it easier to create ad-supported content. You can now configure your view controllers to display ads before displaying the actual content they manage.
  • For information about the new interfaces, see the framework header files. For information about the classes of this framework, see Ad Support Framework Reference.
  • Game Kit Framework:
  • The Game Kit framework (GameKit.framework) includes numerous changes, which are described in “Game Center Improvements.”
  • For information about the classes of this framework, see Game Kit Framework Reference.
  • Foundation Framework:
  • The Foundation framework (Foundation.framework) includes the following enhancements:
  • The NSData class adds support for Base64 encoding.
  • The NSURLSession class is a new class for managing the acquisition of network-based resources. (You can use it to download content even when your app is suspended or not running.) This class serves as a replacement for the NSURLConnection class and its delegate; it also replaces the NSURLDownload class and its delegate.
  • The NSURLComponents class is a new class for parsing the components of a URL. This class supports the URI standard (rfc3986/STD66) for parsing URLs.
  • The NSNetService and NSNetServiceBrowser classes support peer-to-peer discovery over Bluetooth and Wi-Fi.
  • The NSURLCredential and NSURLCredentialStorage classes let you create credentials with a synchronizable policy, and they provide the option of removing credentials with a synchronizable policy from iCloud.
  • The NSURLCache, NSURLCredentialStorage, and NSHTTPCookieStorage classes now support the asynchronous processing of storage requests.
  • The NSCalendar class supports new calendar types.
  • The NSProgress class provides a general-purpose way to monitor the progress of an operation and report that progress to other parts of your app that want to use it.
  • For information about the new interfaces, see the framework header files and Foundation release notes. For general information about the classes of this framework, see Foundation Framework Reference.
  • Core Telephony Framework:
  • The Core Telephony framework (CoreTelephony.framework) lets you get information about the type of radio technology in use by the device. Apps developed in conjunction with a carrier can also authenticate against a particular subscriber for that carrier.
  • For information about the new interfaces, see the framework header files. For general information about the classes of the Core Telephony framework, see Core Telephony Framework Reference.
  • Core Motion Framework:
  • The Core Motion framework (CoreMotion.framework) adds support for step counting and motion tracking. With step counting, the framework detects movements that correspond to user motion and uses that information to report the number of steps to your app. Because the system detects the motion, it can continue to gather step data even when your app is not running. Alongside this feature, the framework can also distinguish different types of motion, including different motions reflective of travel by walking, by running, or by automobile. Navigation apps might use that data to change the type of directions they give to users.
  • For information about the classes of this framework, see Core Motion Framework Reference.
  • Core Location Framework:
  • The Core Location framework (CoreLocation.framework) supports region monitoring and ranging using Bluetooth devices. Region monitoring lets you determine whether the iOS device enters a specific area, and ranging lets you determine the relative range of nearby Bluetooth devices. For example, an art museum might use region monitoring to determine whether a person is inside a particular gallery, and then place iBeacons near each painting. When the person is standing by a painting, the app would display information about it.
  • The framework also supports deferring the delivery of location updates until a specific time has elapsed or the user has moved a minimum distance.
  • For general information about the classes of this framework, see Core Location Framework Reference.
  • Core Foundation Framework:
  • The Core Foundation framework (CoreFoundation.framework) now lets you schedule stream objects on dispatch queues.
  • For information about the new interfaces, see the framework header files. For general information about the interfaces of this framework, see Core Foundation Framework Reference.
  • Core Bluetooth Framework:
  • The Core Bluetooth framework (CoreBluetooth.framework) includes the following enhancements:
  • The framework supports saving state information for central and peripheral objects and restoring that state at app launch time. You can use this feature to support long-term actions involving Bluetooth devices.
  • The central and peripheral classes now use an NSUUID object to store unique identifiers.
  • You can now retrieve peripheral objects from a central manager synchronously.
  • For information about the classes of this framework, see Core Bluetooth Framework Reference and Core Bluetooth Programming Guide.
  • AV Foundation Framework:
  • The AV Foundation framework (AVFoundation.framework) includes the following enhancements:
  • The AVAudioSession class supports the following new behaviors:
  • Selecting the preferred audio input, including audio from built-in microphones
  • Multichannel input and output
  • The AVVideoCompositing protocol and related classes let you support custom video compositors.
  • The AVSpeechSynthesizer class and related classes provide speech synthesis capabilities.
  • The capture classes add support and interfaces for the following features:
  • Discovery of a camera’s supported formats and frame rates
  • High fps recording
  • Still image stabilization
  • Video zoom (true and digital) in recordings and video preview, including custom ramping
  • Real-time discovery of machine-readable metadata (barcodes)
  • Autofocus range restriction
  • Smooth autofocus for capture
  • Sharing your app’s audio session during capture
  • Access to the clocks used during capture
  • Access to capture device authorization status (user must now grant access to the microphone and camera)
  • Recommended settings for use with data outputs and asset writer
  • There are new metadata key spaces for supported ISO formats such as MPEG-4 and 3GPP, and improved support for filtering metadata items when copying those items from source assets to output files using the AVAssetExportSession class.
  • The AVAssetWriter class provides assistance in formulating output settings, and there are new level constants for H.264 encoding.
  • The AVPlayerLayer class adds the videoRect property, which you can use to get the size and position of the video image.
  • The AVPlayerItem class supports the following changes:
  • Asset properties can be loaded automatically when AVPlayerItem objects are prepared for playback.
  • When you link your app against iOS 7 SDK, the behavior when getting the values of player item properties—such as the duration, tracks, or presentationSize properties—is different from the behaviors in previous versions of iOS. The properties of this class now return a default value and no longer block your app if the AVPlayerItem object is not yet ready to play. As soon as the player item’s status changes to AVPlayerItemStatusReadyToPlay, the getters reflect the actual values of the underlying media resource. If you use key-value observing to monitor changes to the properties, your observers are notified as soon as changes are available.
  • The AVPlayerItemLegibleOutput class can process timed text from media files.
  • The AVAssetResourceLoaderDelegate protocol now supports loading of arbitrary ranges of bytes from a media resource.
  • For information about the new interfaces, see the framework header files. For general information about the classes of this framework, see AV Foundation Framework Reference.
  • Accelerate Framework:
  • The Accelerate framework (Accelerate.framework) includes the following enhancements:
  • Improved support for manipulating Core Graphics data types
  • Support for working with grayscale images of 1, 2, or 4 bits per pixel
  • New routines for converting images between different formats and transforming image contents
  • Support for biquad (IIR) operations
  • For information about the new interfaces, see the framework header files. For general information about the functions and types of this framework, see Accelerate Framework Reference.
  • Objective-C:
  • The Objective-C programming language has been enhanced to support modules, which yield faster builds and shorter project indexing times. Module support is enabled in all new projects created using Xcode 5. If you have existing projects, you must enable this support explicitly by modifying your project’s Enable Modules setting.
  • Deprecated APIs:
  • From time to time, Apple adds deprecation macros to APIs to indicate that those APIs should no longer be used in active development. When a deprecation occurs, it is not an immediate end-of-life to the specified API. Instead, it is the beginning of a grace period for transitioning off that API and onto newer and more modern replacements. Deprecated APIs typically remain present and usable in the system for a reasonable amount of time past the release in which they were deprecated. However, active development on them ceases and the APIs receive only minor changes—to accommodate security patches or to fix other critical bugs. Deprecated APIs may be removed entirely from a future version of the operating system.
  • As a developer, it is important that you avoid using deprecated APIs in your code as soon as possible. At a minimum, new code you write should never use deprecated APIs. And if you have existing code that uses deprecated APIs, update that code as soon as possible. Fortunately, the compiler generates warnings whenever it spots the use of a deprecated API in your code, and you can use those warnings to track down and remove all references to those APIs.
  • This release includes deprecations in the following technology areas:
  • The Map Kit framework includes deprecations for the MKOverlayView class and its various subclasses. The existing overlay views have been replaced with an updated set of overlay renderer objects that descend from the MKOverlayRenderer class. For more information about the classes of this framework, see Map Kit Framework Reference.
  • The Audio Session API in the Audio Toolbox framework is deprecated. Apps should use the AVAudioSession class in the AV Foundation framework instead.
  • The CLRegion class in the Core Location framework is replaced by the CLCircularRegion class. The CLRegion class continues to exist as an abstract base class that supports both geographic and beacon regions.
  • The UUID property of the CBCentral class is deprecated. To specify the unique ID of your central objects, use the identifier property instead.
  • The Game Kit framework contains assorted deprecations intended to clean up the existing API and provide better support for new features.
  • The UIKit framework contains the following deprecations:
  • The wantsFullScreenLayout property of UIViewController is deprecated. In iOS 7 and later, view controllers always support full screen layout.
  • UIColor objects that provided background textures for earlier versions of iOS are gone.
  • Many drawing additions to the NSString class are deprecated in favor of newer variants.
  • The gethostuuid function in the libsyscall library is deprecated.
  • In iOS 7 and later, if you ask for the MAC address of an iOS device, the system returns the value 02:00:00:00:00:00. If you need to identify the device, use the identifierForVendor property of UIDevice instead. (Apps that need an identifier for their own advertising purposes should consider using the advertisingIdentifier property of ASIdentifierManager instead.)

New in iOS SDK 5.1 (Mar 7, 2012)

  • Dictation Support in Text Input Views - On supported devices, iOS automatically inserts recognized phrases into the current text view when the user has chosen dictation input. The new UIDictationPhrase class (declared in UITextInput.h) provides you with a string representing a phrase that a user has dictated. In the case of ambiguous dictation results, the new class provides an array containing alternative strings. New methods in the UITextInput protocol allow your app to respond to the completion of dictation.

New in iOS SDK 5.0 (Oct 12, 2011)

  • Accounts:
  • When creating an iCloud account, you can use any Apple ID as long as it is a full email address and not a MobileMe account. If you have a MobileMe account, you can move that account to iCloud. You can find more information at: http://me.com/move
  • AirPlay:
  • Starting in iOS 5, AirPlay is enabled by default for video content in applications and websites.
  • In iOS 5, AV Foundation adds support for video playback via AirPlay.
  • APIs:
  • The NSNetService class and CFNetService APIs do no include P2P interfaces by default. To browse, register, or resolve services over P2P interfaces, an application needs to use the Bonjour DNSService*() APIs noted below.
  • Setting the interfaceIndex parameter to kDNSServiceInterfaceIndexAny in the following API's will not include P2P interfaces by default. To include P2P interfaces, you must now set the kDNSServiceFlagsIncludeP2P flag when using kDNSServiceInterfaceIndexAny or set the interfaceIndex to kDNSServiceInterfaceIndexP2P. The affected APIs are:
  • DNSServiceBrowse
  • DNSServiceRegister
  • DNSServiceResolve
  • DNSServiceRegisterRecord
  • DNSServiceQueryRecord
  • API Validation:
  • In the iOS 5 development tools, it is possible to extract APIs used by an application and have them checked for use of private APIs. This option is offered when you validate your application for app submission.
  • Apple TV:
  • The Apple TV Software enables users to mirror the contents of an iPad 2 to an Apple TV (2nd generation) using AirPlay. This software also enables Photo Stream on Apple TV so users can access photos stored in iCloud. Apple TV Software beta is being provided to test the latest AirPlay functionality with your iOS 5 apps and web sites. If you wish to install Apple TV Software beta on your device, you must first register your device UDID in the iOS Developer Program Portal.
  • Automatic Reference Counting:
  • In Xcode, if the configuration is set to Device and there is a space in the path of one of the source files (more commonly, the project is inside a directory with spaces), the “Convert to Automatic Reference Counting” step (after Precheck) will fail with error: Error in format of file: . 
If encountered, the user should switch to Simulator and retry the migration.
  • Binary Compatibility:
  • On applications linked against the iOS 5 SDK, scroll view content offsets will no longer be rounded to integral pixels during a pinch gesture.
  • GameKit:
  • Match data for turn-based matches is limited to 4 KB.
  • FIXED: Auto-matching with the turn-based view controller does not work. Invites or the direct auto-match API can be used as a workaround.
  • iCloud Backup:
  • Backups made prior to September 22nd are no longer available. It is strongly advised to upgrade to this version of iOS 5 in order to continue backing up your devices
  • iCloud Storage:
  • In the iCloud key-value store, the maximum number of keys has been raised to 256.
  • All newly generated provisioning profiles are now automatically enabled for iCloud. If you are using an Xcode managed Team Provisioning Profile, click refresh in the Xcode Organizer to obtain a new iCloud-enabled profile. To enable all other provisioning profiles for iCloud, simply regenerate your profiles in the iOS Provisioning Portal.
  • If your application is using the NSMetadataQuery class, you must set a predicate and the predicate is now honored. But the predicate is an NSPredicate-style predicate, not a Spotlight-style predicate. An example of the difference is that you must use LIKE instead of = for wildcard matching. The differences are defined in more detail at: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pSpotlightComparison.html#//apple_ref/doc/uid/TP40002370-SW1.
  • The setSortDescriptors: method of NSMetadataQuery is not supported.
  • To enable iCloud storage within your apps in iOS 5, click the Enable Entitlements checkbox in the Summary pane of your project. Xcode creates a custom entitlements file for your project that automatically includes your Team ID. You can add additional iCloud Container values as required by your application. (Note that you must regenerate your existing provisioning profiles, either with Xcode or in the iOS Provisioning Portal, to use iCloud storage.)
  • The container identifier string you pass to the URLForUbiquityContainerIdentifier: method of NSFileManager must include the team ID at the beginning of the string. As a convenience, you can pass nil to retrieve the first document container ID specified in your app’s entitlements.
  • In iOS 5, files that are protected via Data Protection cannot be used with iCloud Storage APIs.
  • File presenters—objects that adopt the NSFilePresenter protocol—do not receive some of the messages that they are supposed to receive, including:
  • presentedSubitemDidChangeAtURL:
  • As a work around, implement the relinquishPresentedItemToWriter: method and check to see if the writer actually wrote when your file presenter reacquires the file.
  • If you report a bug related to the iCloud storage interfaces, please include the logs collected during your debugging session. To generate these logs, you must install a special debug profile on your device. 
The debug profile can be obtained from http://connect.apple.com. This profile enables the generation of debug logs that are needed to diagnose any problems using iCloud storage. The instructions to collect the logs are:
  • Install the profile. (The easiest way to do this is to mail it to yourself and open the attachment on your device.)
  • Reproduce the bug.
  • Sync with iTunes to pull the logs off your device.
  • Attach the logs to your bug report. You can find the logs in ~/Library/Logs/CrashReporter/MobileDevice/DeviceName/DiagnosticLogs.
  • These logs can grow large very quickly, so you should remove the profile after you have reproduced the problem and pulled the logs of your device.
  • File names are case-insensitive in Mac OS X but case-sensitive in iOS. This can lead to problems when sharing files between the two using iCloud. You should take steps on iOS to avoid creating files whose names differ only by case.
  • iTunes:
  • The version of iTunes that comes with the GM release cannot sync devices that have the beta 7 software installed. To avoid this problem, do the following:
  • Sync any devices that have beta 7 installed to the version of iTunes that came with beta 7.
  • Upgrade iTunes to the version that comes with the GM release.
  • Connect the device and install the GM software. (Understand that you might see a failure to sync error when you first connect the device.)
  • After installing the GM software, restore from your backup you made in step 1.
  • Music Player:
  • FIXED: When deleting a song or video from Music/Videos on the device, the Music Player app crashes.
  • Security:
  • In iOS 5, the signing of certificates with MD5 signatures is not supported. Please ensure that certificates use signature algorithms based on SHA1 or SHA2.
  • Springboard:
  • Push and local notifications for apps appear in the new Notification Center in iOS 5. Notification Center displays notifications that are considered "unread.” To accommodate push and local notifications that have no unread status, set your application’s badge count to 0 to clear that app’s notifications from Notification Center.
  • UI Automation:
  • When using the performTaskWithPathArgumentsTimeout method of UIAHost in a UI Automation script where the API outputs excessively (say, thousands of lines of text) to standard out or standard error, the task may deadlock until the timeout is reached, at which point it will throw a JavaScript exception.
  • The lock() and unlock() functions of UIATarget have been replaced with the lockForDuration() function.
  • In iOS 5, you can now trigger the execution of a UI Automation script on an iOS device from the host terminal by using the instruments tool. The command is:
  • instruments -w -t
  • When using the cli instruments for UI Automation you can now target the default Automation Template and pass the script and results path into the tool as environment variable options. For example:
  • instruments -w -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate -e UIASCRIPT -e UIARESULTSPATH
  • UIKit:
  • Rotation callbacks in iOS 5 are not applied to view controllers that are presented over a full screen. What this means is that if your code presents a view controller over another view controller, and then the user subsequently rotates the device to a different orientation, upon dismissal, the underlying controller (i.e. presenting controller) will not receive any rotation callbacks. Note however that the presenting controller will receive a viewWillLayoutSubviews call when it is redisplayed, and the interfaceOrientation property can be queried from this method and used to lay out the controller correctly.
  • In iOS 5, the UIPickerView class doesn't send its pickerView:didSelectRow:inComponent: delegate message in response to the programatic selection of an item.
  • Returning nil from the tableView:viewForHeaderInSection: method (or its footer equivalent) is no longer sufficient to hide a header. You must override tableView:heightForHeaderInSection: and return 0.0 to hide a header.
  • In iOS 5, the UITableView class has two methods to move one cell from one row to another with defined parameters. These APIs are:
  • moveSection:toSection:
  • moveRowAtIndexPath:toIndexPath:
  • Using the UIWebView class in Interface Builder, setting a transparent background color is possible in iOS 5. Developers compiling against the new SDK can check their XIB for the UIWebView transparent setting.
  • In iOS 5, the UINavigationBar, UIToolbar, and UITabBar implementations have changed so that the drawRect: method is not called unless it is implemented in a subclass. Apps that have re-implemented drawRect: in a category on any of these classes will find that the drawRect: method isn't called. UIKit does link-checking to keep the method from being called in apps linked before iOS 5 but does not support this design on iOS 5 or later. Apps can either:
  • Use the customization API for bars in iOS 5 and later, which is the preferred way.
  • Subclass UINavigationBar (or the other bar classes) and override drawRect: in the subclass.
  • The indexPathForRow:inSection:, section, and row methods of NSIndexPath now use NSInteger instead of NSUInteger, so that these types match with methods defined on UITableView.
  • The behavior of the UITableView class’s scrollToRowAtIndexPath:atScrollPosition:animated: method has changed. If a scroll position of UITableViewScrollPositionTop or UITableViewScrollPositionBottom is specified, the method now adjusts for the top and bottom portions of the contentInset property.
  • In releases prior to iOS 5, the UIPopoverController class would unconditionally set the autoresizing masks of view controllers that provided the content for the popover controller. It would also unconditionally set the autoresizing masks of the views of view controllers pushed on to a UINavigationController object which was the content view controller of the popover controller.
The UIPopoverController class no longer does this for applications linked against iOS 5 or later. Developers should ensure that the autoresizing masks of views are set properly to allow for arbitrary resizing within any container, not just popovers. A mask of (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight) is reasonable.
  • The completion handler for saveToURL:forSaveOperation:completionHandler: is called outside of the coordinated write block.
  • The autosaveWithCompletionHandler: method is now only called for period-based saves when it is safe to return without saving. Documents must save, though, if the saveToURL:forSaveOperation:completionHandler: method is invoked.
  • Safari and WebKit:
  • In iOS 5, a new inherited CSS property, -webkit-overflow-scrolling, is available. The value touch allows the web developer to opt in to native-style scrolling in an overflow:scroll element. The default value for this property is auto, which allows single-finger scrolling without momentum.
  • The WebKit framework has been updated to a version which closely matches the engine used by Safari 5.1 on the Desktop. There are some areas to be aware of with the new WebKit framework on iOS 5. Specifically, for web sites and native apps that use UIWebView:
  • There is a new HTML5-compliant parser.
  • Text layout width may change slightly because word-rounding behavior now has floating-point-based precision.
  • There is improved validation of the form field, which includes removing leading zeros and number formatting.
  • Touch events are now supported on input fields.
  • is now supported.
  • window.onerror is now supported.
  • There is a new user agent that does not have locale information in the User Agent string.
  • URLs are now canonicalized by making the scheme all lowercase. If a fake URL is used to pass information from a UIWebView back to native code, make sure that the scheme is always lowercase, or that the native code compares the scheme in a case-insensitive manner.
  • Wi-Fi Syncing:
  • Wireless syncing support requires Mac OS X 10.6.8 or Lion. You will see an option to enable wireless syncing when you connect your device to iTunes with the USB cable. It is recommended you perform your initial sync with a cable after restoring your device.
  • Wireless syncing is triggered automatically when the device is connected to power and on the same network as the paired computer. Or, you can manually trigger a sync from iTunes or from Settings > General > iTunes Sync (same network as paired computer required).
  • If you find issues with apps, media and/or photos synced to your device, you can reset then resync. From Settings > General > Reset, choose Erase all Content and Settings. Then reconnect to iTunes and sync again.

New in iOS SDK 4.3 (Mar 9, 2011)

  • AirPlay Video Support:
  • Support for playing video using AirPlay is included in the MPMoviePlayerController class. This support allows you to play video-based content on AirPlay–enabled hardware such as Apple TV. When the allowsAirPlay property of an active MPMoviePlayerController object is set to YES and the device is in range of AirPlay–enabled hardware, the movie player presents the user with a control for sending the video to that hardware. (That property is set to NO by default.) Supported formats include:
  • H.264 video with AAC audio
  • HTTP streaming, both live and on demand
  • progressive download content
  • local content
  • For web-based content, you can enable AirPlay Video in the QuickTime Plug-in or HTML5 video element as follows:
  • QTPlug-in:
  • airplay="allow"
  • airplay="deny" (Default)
  • For example:
  • HTML5 video element:
  • x-webkit-airplay="allow"
  • x-webkit-airplay="deny" (Default)
  • For example:
  • For more information about using the MPMoviePlayerController class to play video, see MPMoviePlayerController Class Reference.
  • Framework Enhancements:
  • The following sections highlight the significant changes to frameworks and technologies in iOS 4.3. For a complete list of all new interfaces available in the system, see iOS 4.3 API Diffs.
  • AV Foundation:
  • The AV Foundation framework includes the following enhancements:
  • The AV Foundation framework added the AVPlayerItem, AVPlayerItemAccessLogEvent, and AVPlayerItemErrorLogEvent classes for tracking network playback statistics.
  • The AVMetadataItem class added support for loading key data asynchronously.
  • For information about the classes of the UIKit framework, see AV Foundation Framework Reference.
  • Core Audio Frameworks:
  • The Audio Unit and Audio Toolbox frameworks include the following enhancements:
  • The AudioUnitParameterHistoryInfo struct (in the Audio Unit framework) along with supporting audio unit properties adds the ability to track and use parameter automation history.
  • The ExtendedAudioFormatInfo struct (in the Audio Toolbox framework) lets you specify which codec to use when accessing the kAudioFormatProperty_FormatList property.
  • The kAFInfoDictionary_SourceBitDepth dictionary key and the kAudioFilePropertySourceBitDepth property (in the Audio Toolbox framework) provide access to the bit depth of an audio stream.
  • The kAudioConverterErr_NoHardwarePermission result code (in the Audio Toolbox framework) indicates that a request to create a new audio converter object cannot be satisfied because the application does not have permission to use the requested hardware codec.
  • For information about the functions and types of the Audio Unit framework, see Audio Unit Framework Reference. For information about the functions and types of the Audio Toolbox framework, see Audio Toolbox Framework Reference.
  • iAd:
  • The ADInterstitialAd class is controller that you can use to present full-screen banners in your content. You present these banners in an existing view or as part of a transition from one page of content to another. For example, you might use this object to incorporate full-page ads into a page-based magazine layout.
  • For more information about the classes of the iAd framework, see iAd Framework Reference.
  • Media Player:
  • The Media Player framework includes the following enhancements:
  • The MPMoviePlayerController class supports playback of video content using AirPlay; see “AirPlay Video Support.”
  • The MPMovieAccessLog, MPMovieErrorLog, MPMovieAccessLogEvent, and MPMovieErrorLogEvent classes allow you to track network playback statistics.
  • The MPMoviePlayerController class now includes properties for accessing log information.
  • For more information about the classes of the Media Player framework, see Media Player Framework Reference.
  • UIKit:
  • The UIViewController class added the disablesAutomaticKeyboardDismissal method, which you can use to override the default input view dismissal behavior.
  • For more information about the classes of the UIKit framework, see UIKit Framework Reference.

New in iOS SDK 4.2 (Nov 23, 2010)

  • Printing
  • AirPlay
  • Core MIDI
  • Weak Linking Support
  • Framework Enhancements

New in iOS SDK 4.0 (Jun 22, 2010)

  • With a rich set of over 1500 new APIs, iPhone SDK for iOS 4 provides you with an amazing range of technologies to enhance the functionality of your iPhone and iPod touch apps. Registered Apple developers can visit the iPhone Dev Center to download the iPhone SDK 4 now.

New in iOS SDK 4 Beta (Apr 9, 2010)

  • With a rich set of over 1500 new APIs, iPhone SDK for iPhone OS 4 provides you with an amazing range of technologies to enhance the functionality of your iPhone and iPod touch apps. iPhone Developer Program members can visit the iPhone Dev Center to download the iPhone SDK 4 beta now.

New in iOS SDK 3.1.3 (Feb 2, 2010)

  • SDK support for targeting non-Mac OS X platforms, including iPhone OS SDK.
  • GCC 4.2 & LLVM GCC 4.2 optional compilers for use with Mac OS X 10.5 SDK
  • Updated assistants to create new projects, targets, and source files
  • Toolbar uses a single popup to choose platform, target, and debug/release
  • Integrated SCM support now works with Subversion 1.5

New in iOS SDK 3.2 Beta (Jan 28, 2010)

  • iPhone SDK 3.2 beta contains all the tools you need to start developing and optimizing iPhone OS applications for iPad.

New in iOS SDK 3.1.2 (Oct 9, 2009)

  • Instruments can now profile your application on a device via WiFi connection. Read the release notes for instructions on how to set this up for your devices.
  • Organizer: the iPhone Development grouping now collects crash logs, install bundles, and provisioning profiles in a single location.
  • iPhone OS 3.1 Simulator uses frameworks more closely matching the device.

New in iOS SDK 3.1 (Sep 9, 2009)

  • Instruments can now profile your application on a device via WiFi connection. Read the release notes for instructions on how to set this up for your devices.
  • Organizer: the iPhone Development grouping now collects crash logs, install bundles, and provisioning profiles in a single location.
  • iPhone OS 3.1 Simulator uses frameworks more closely matching the device.

New in iOS SDK 3.0 Build 9M2736 (Jun 18, 2009)

  • Organizer: the iPhone Development grouping now collects crash logs, install
  • bundles, and provisioning profiles in a single location
  • iPhone OS 3.0 Simulator uses frameworks more closely matching the device
  • Mac OS X: GCC 4.2 & LLVM GCC 4.2 optional compilers for use with 10.5 SDK
  • Toolbar uses a single popup to choose platform, target, and debug/release
  • Integrated SCM support now works with Subversion 1.5!

New in iOS SDK 3.0 Beta 3 (Apr 15, 2009)

  • New in Xcode IDE 3.1 and later:
  • The assistant interface has been completely revamped, making it easier to create “New Project”, “New Target”, and “New File” resources. This release of Xcode also adds new assistant templates for both Mac OS X and iPhone OS applications.
  • A new Overview toolbar item lets you see and set the project’s active Target, Configuration, Executable, Architecture, and SDK with a single control.
  • It is now possible to set a global “override” SDK as the Active SDK, making it easy to test the build of your entire project against a different platform.
  • New interface shortcuts have been added to the Build Setting inspectors making it easy to set the desired compiler, architectures, and SDKs
  • You can now add Libraries and Frameworks directly into the Target window and relate them to the project’s SDK.
  • The Xcode UI now allows you to designate a library or framework as weak-linked, to support building with newer SDKs while targeting older OS versions.
  • New “Edit all in scope” option within the Xcode source editor makes it easy to update all instances of the selected symbol within the current scope of code.
  • You can now have conditional build settings assigned for any combination of architecture and SDK.
  • LLVM GCC 4.2 is a new optional compiler based on the LLVM.org open source project. LLVM GCC 4.2 provides an LLVM-based back-end optimizer using the GCC 4.2 front-end parser. This compiler is both source and binary compatible with GCC 4.2 and requires the Mac OS X 10.5 SDK or “Current OS” SDK.
  • GCC 4.2 is a new optional compiler with stricter C and C++ language enforcement, security enhancements, performance optimizations, and bug fixes over GCC 4.0. Requires the Mac OS X 10.5 SDK or “Current OS” SDK.
  • New in Interface Builder 3.1:
  • New drag & drop functionality allows easily re-parenting objects with the normal drag gesture.
  • The document outline view has been enhanced to support full drag re-ordering.
  • A new string table interface allows localizers to make quick text changes across documents.
  • Generates XIB files that are more diff friendly while retaining full backwards compatibility with Interface Builder 3.0.
  • Now supports previewing image resource content in Carbon controls.
  • New in Dashcode:
  • You can now use Dashcode to create web aiPhone, as well as Dashboard widgets.

New in iOS SDK Build 9M2621a (Jan 28, 2009)

  • SDK support for targeting non-Mac OS X platforms, including iPhone OS SDK.
  • GCC 4.2 & LLVM GCC 4.2 optional compilers for use with Mac OS X 10.5 SDK.
  • Updated assistants to create new projects, targets, and source files.
  • Toolbar uses a single popup to choose platform, target, and debug/release.
  • Integrated SCM support now works with Subversion 1.5.

New in iOS SDK Build 9M2621 (Nov 24, 2008)

  • Toolbar uses a single popup to choose platform, target, and debug/release
  • Integrated SCM support now works with Subversion 1.5

New in iOS SDK Build 9M2517 (Sep 11, 2008)

  • SDK support for targeting non-Mac OS X platforms, including iPhone OS SDK.
  • GCC 4.2 & LLVM GCC 4.2 optional compilers for use with Mac OS X 10.5 SDK.
  • Updated assistants to create new projects, targets, and source files
  • Bug fixes for both iPhone OS and Mac OS X development.

New in iOS SDK Beta 8 Build 9M2199a (Jun 27, 2008)

  • This eighth beta release of the iPhone SDK includes a complete set of tools,
  • compilers, frameworks, and documentation for creating iPhone OS applications.
  • These tools include the Xcode IDE, and the Instruments analysis tool, among many others. Beta release 8 is compatible with the final iPhone OS 2.0 release and must be used to build and sign any iPhone OS application to be submitted to the App Store.

New in iOS SDK Beta 7 Build 9M2199 (Jun 10, 2008)

  • Beta release 7 fixes bugs and adds support for the latest iPhone OS.

New in iOS SDK Beta 6 Build 9M2192 (May 29, 2008)

  • NEW: This beta release of the iPhone SDK is targeted to work only on Mac OS X 10.5.3 and is known to have compatibility issues on other OS releases, and pre-release software. If you wish to run alternate versions of Mac OS X it is recommended you keep a separate partition for the iPhone SDK and its required version of Mac OS X.FIXED: Content purchased from iTunes Store will not sync to or play on devices with iPhone OS beta installed. iTunes will report that you need a newer update of the iPhone software to play the content.
  • NEW: iPhone Simulator does not support network home directories.FIXED: Text fields created in Interface Builder will cause a crash when they become first responder when run in the simulator. These same text fields will behave properly on the device. To work around either debug purely on devices or create your text fields programmatically.The version of Foundation in the simulator platform includes functionality not included in iPhone OS. To ensure functionality is not used that is not present on iPhone, check the documentation for availability information.When running the simulator, applications may behave erratically (no longer launching, hanging, returning errors, etc.). Rebooting should resolve the issue.FIXED: Messages logged with NSLog will not appear in the Xcode run log. However, logs do appear in Console.app.
  • NEW: The following samples have been removed from the SDK because their purpose has been duplicated by other samples or they are no longer necessary given additions to the SDK: ColorSlidingPuzzle, FingerSketch, GestureMatch, GLGravity, GLTeapot, Kalimba, Jigsaw.FIXED: GLPaint has been removed from the published samples while it is revised to use the new EAGL interfaces, transition to using nibs, and updated to no longer use the touchesChanged:withEvent: method.
  • You have to specify the image extension to -imageNamed: to get results.
  • NEW: When using a UIImagePickerController, the image returned to the delegate via imagePickerController:didFinishPickingImage:editingInfo: is not usable unless allowsImageEditing has been set to YES on the controller.UIImagePickerController cannot be used in UIImagePickerControllerSourceTypePhotoLibrary mode.FIXED: Edited images returned by UIImagePickerController are always square, with black bars for image areas that were outside of the area selected by the user.
  • NEW: The small activity indicators have been deprecated.NEW: Canceled has been renamed Cancelled in various parts of the API.NEW: cellForRowAtIndexPath: has been moved from the delegate to the data source protocol.NEW: Applications using UINavigationController cannot be launched in landscape mode.
  • Including the degree character in a format string disables text updates to a UILabel object.Unicode escape sequences are required for Unicode characters to show up in a label.UILabel ignores its contentMode property.
  • NEW: UIPickerView's delegate protocol has been split in to a data source and delegate protocols.
  • NEW: scrollViewWillBeginZooming has been changed to viewForZoomingInScrollView.FIXED: Scrollers do not reflect content inset.After zooming, content inset is ignored and content is left in the wrong position.
  • FIXED: UIString drawing is upside-down in a manually created CGContext.UILineBreakModeTruncateHead and UILineBreakModeMiddleTruncation do not work properly for multiline text.
  • NEW: Tab bar items no longer support target/action. The tab bar's delegate callback will need to be used.
  • NEW: UITableView leaks NSIndexPath in layoutSubviews when running in the simulator (not on the device).NEW: There was an issue in the template file for UITableViewCell subclasses. If you override prepareForReuse, you must make sure to call super or else the cell can't be reused properly.UITableView delegate's selection method was renamed to -tableView:selectionDidChangeToIndexPath: (from -tableView:selectionDidChangeToIndexPath:fromIndexPath:).FIXED: Tapping in the table view with the delete button visible selects the cell instead of dismissing the button.FIXED: UITextField objects placed as subviews in a UITableViewCell�s contentView will not receive touches.UITextView objects embedded inside a UITableViewCell never receive touches.It is very, very expensive to customize row heights (via tableView:heightForRowAtIndexPath:).Unable to animate an off screen row in to place if you deselect it at the same time.UITableView does not update the row height when reloadCellAtRow: is called.FIXED: Performance of plain table views with section headers is slow.Unable to resize table wider than the screen.
  • NEW: Tapping in a text field while the keyboard is animating in may cause a crash.NEW: UITextField cannot be made to resign first responder once offscreen.
  • UITextView�s loupe ignores the underlying view's background color.Setting UITextView.editable to YES should not automatically show the keyboard.
  • UIToolbarModeNone is being deprecated.Toolbar does not properly size and position some items.UIToolbarModeRadio has been deprecated, and the mode property has been removed. Use UITabBar for radio mode toolbars instead.
  • -[UIToolbarController setSelectionIndex] doesn't work for members of the viewControllers array that are offscreen.
  • NEW: UITouch is not adjusted when a layer has a transform applied to it.UITouch does not properly handle multiple taps from multiple fingers.An application will not receive UITouchPhaseBegan if a swipe begins on or above the status bar.FIXED: No UITouchPhaseEnded received for a touch which is coalesced with another.
  • animationDidEnd fires too soon and can cause animations to stutter if you do too much work in the callback.If a view subclass implements -drawRect: then the background color for that view subclass cannot be animated.
  • NEW: UINavigationController won't resize content view automatically if barStyle is changed to/from UIBarStyleBlackTranslucent.NEW: If a view is detached from a given UIViewController as a top-level nib object, but connected as an outlet, the view's origin is incorrectly moved upwards by approximately 24 pixels.FIXED: View controller should transition keyboard out on pop, dismiss.UIViewController does not support fading to a different view when rotated to landscape.
  • FIXED: encodeWithCoder: raises an exception when attempting to simulate a UIWindow that contains an IBUIWebView.UIViewController does not auto-rotate when added to a window that is rotated already.Links don't highlight when WebKit is single threaded.
  • When playing network media, the HUD controls cannot be hidden. Even if a user taps to dismiss them, they remain visible.Calling release on the MPMoviePlayerController in the MPMoviePlayerPlaybackDidFinishNotification will cause MPMoviePlayerController to crash. A workaround is to call autorelease instead.
  • NEW: You may only use .png files for application icons for the device.NEW: Code that used NSBundle loadNibNamed in Beta 4 may throw an exception in Beta 5 and beyond, as we no longer return the ephemeral proxies in the list of objects.FIXED: Xcode may hang for a period of time. If you run into 'error 19,' you will need to move aside your logs from ~/Library/Logs/CrashReporter/MobileDevice.You may receive iTunes error messages when installing an IPSW onto the phone via Xcode.Xcode will crash if iTunes 7.6.1 is installed after installing the iPhone SDK.The iPhone SDK is designed for Intel-based Macs and is not supported on PPC-based Macs.Xcode and the iPhone SDK only work in 32-bit mode; 64-bit mode is not supported.When running and debugging on a device, be sure to turn off Passcode lock.Using the Xcode menu Run > Start with Performance Tool > does not work even though it is enabled. The application is not uploaded to the device. When the application is already present, Instruments targets the local machine and "Target failed to start" appears in the tracks.Trying to debug two applications at the same time on the same device fails with a broken pipe error in the debugger console.Instruments will act unpredictably with multiple devices attached.
  • iPhone OS 2.0 Beta 5 to Beta 6 API Changes
  • NEW: API reference largely updated to beta 6 API.The documentation set installed with the SDK is a skeletal set consisting of indexes. To install local copies of the iPhone OS documentation, be sure to subscribe to the iPhone OS documentation set in the documentation window and force an update.NEW: New conceptual document with beta 6: Table View Programming Guide for iPhone OS.NEW: Updated document with beta 6: Interface Builder User Guide.
  • Data files are now preserved while uploading from Xcode for Run/Debug/Go. To clear your application�s data and preferences, delete the application from the simulator UI.
  • You can now add the view of a UIViewController to an arbitrary view.

New in iOS SDK Beta 5 Build 9M2173a (May 7, 2008)

  • Fixes bugs
  • Adds support for the latest iPhone OS

New in iOS SDK Beta 4 Build 9M2165 (Apr 24, 2008)

  • The fourth beta version of the iPhone SDK includes Xcode IDE, iPhone simulator with Open GL ES support, Interface Builder, Instruments, frameworks and samples, compilers, and Shark analysis tool.

New in iOS SDK Beta 3 Build 9M2158a (Apr 9, 2008)

  • Fixes bugs and adds support for the latest iPhone OS.

New in iOS SDK Beta 2 (Mar 28, 2008)

  • The second beta version of the iPhone SDK is now available and includes Interface Builder, a powerful tool that allows you to visually build your interface and makes creating a UI as simple as drag and drop.
  • We've also added new sample code and updated documentation to the rich set of resources available to you in the iPhone Dev Center.